package cn.fl.ref.fncprjfstpyinfo.transform;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.ref.fncprjfstpyinfo.vo.FncPrjFstpyInfoVO;
import fl.ref.fncprjfstpyinfo.dto.FncPrjFstpyInfoDTO;

/**
 * @Description: 融资项目首付款信息
 */
public class FncPrjFstpyInfoVOTransform {
	
	/**
	 * 分转元
	 * @param number
	 * @return
	 */
	public static BigDecimal fenToYuan(BigDecimal number){
		if(number!=null&&number!=new BigDecimal(0)){
			return number.divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
		}
		return null;
	}
	
	/**
	 * 元转分
	 * @param number
	 * @return
	 */
	public static BigDecimal yuanToFen(BigDecimal number){
		if(number!=null&&number!=new BigDecimal(0)){
			return number.multiply(new BigDecimal(100));
		}
		return null;
	} 

	/**
	 * VO 转 DTO
	 * 
	 * @param dto
	 * @return
	 */
	public static FncPrjFstpyInfoDTO toDTO(FncPrjFstpyInfoVO vo) {
		FncPrjFstpyInfoDTO dto = null;
		if (vo != null) {
			dto = new FncPrjFstpyInfoDTO();
			dto.setId(vo.getId());// 逻辑序号
			dto.setFncPrjId(vo.getFncPrjId());// 融资项目编号
			dto.setCostAmt(yuanToFen(vo.getCostAmt()));// 费用金额
			dto.setPrePayDate(vo.getPrePayDate());// 预计付款时间
			dto.setRmrk(vo.getRmrk());// 备注
			dto.setPayAmt(yuanToFen(vo.getPayAmt()));// 已付金额
			dto.setScmChrgId(vo.getScmChrgId()); // 融资方案计费参数ID
			
			dto.setCostNm(vo.getCostNm());// 费用名称
			dto.setFscpCostAmt(yuanToFen(vo.getFscpCostAmt())); // 费用金额 方案
			dto.setCostPct(vo.getCostPct());//费用比例
			dto.setCostCrdnlt(vo.getCostCrdnlt());//费用基数(1.设备金额 2.剩余本金 3.剩余租金 4.融资额)
			dto.setWthrDdct(vo.getWthrDdct());// 是否坐扣
			dto.setRecAccount(vo.getRecAccount());
			dto.setPayAccount(vo.getPayAccount());
			dto.setIsAlreadyPay(vo.getIsAlreadyPay());
			dto.setWhichPrjId(vo.getWhichPrjId());
			dto.setReReturnTm(vo.getReReturnTm());
			dto.setMrgnIs(vo.getMrgnIs());
			dto.setReReturnTm(vo.getReReturnTm());
		}
		return dto;
	}

	/**
	 * DTO 转 PO
	 * 
	 * @param dto
	 * @return
	 */
	public static FncPrjFstpyInfoVO toVO(FncPrjFstpyInfoDTO dto) {
		FncPrjFstpyInfoVO vo = null;
		if (dto != null) {
			vo = new FncPrjFstpyInfoVO();
			vo.setId(dto.getId());// 逻辑序号
			vo.setFncPrjId(dto.getFncPrjId());// 融资项目编号
			vo.setCostAmt(fenToYuan(dto.getCostAmt()));// 费用金额
			vo.setPrePayDate(dto.getPrePayDate());// 预计付款时间
			vo.setRmrk(dto.getRmrk());// 备注
			vo.setPayAmt(fenToYuan(dto.getPayAmt()));// 已付金额
			vo.setScmChrgId(dto.getScmChrgId()); // 融资方案计费参数ID

			vo.setCostNm(dto.getCostNm());// 费用名称
			vo.setFscpCostAmt(fenToYuan(dto.getFscpCostAmt())); // 费用金额 方案
			vo.setCostPct(dto.getCostPct());//费用比例
			vo.setCostCrdnlt(dto.getCostCrdnlt());//费用基数(1.设备金额 2.剩余本金 3.剩余租金 4.融资额)
			vo.setWthrDdct(dto.getWthrDdct());// 是否坐扣
			vo.setRecAccount(dto.getRecAccount());
			vo.setPayAccount(dto.getPayAccount());
			vo.setIsAlreadyPay(dto.getIsAlreadyPay());
			vo.setWhichPrjId(dto.getWhichPrjId());
			vo.setReReturnTm(dto.getReReturnTm());
			vo.setMrgnIs(dto.getMrgnIs());
			vo.setReReturnTm(dto.getReReturnTm());
		}
		return vo;
	}

	/**
	 * PO集合 转 DTO集合
	 * 
	 * @param list
	 * @return
	 */
	public static List<FncPrjFstpyInfoDTO> toDTOList(List<FncPrjFstpyInfoVO> list) {
		List<FncPrjFstpyInfoDTO> voList = new ArrayList<FncPrjFstpyInfoDTO>();
		if (CollectionUtils.isNotEmpty(list)) {
			for (FncPrjFstpyInfoVO vo : list) {
				voList.add(toDTO(vo));
			}
		}
		return voList;
	}

	/**
	 * DTO集合 转 PO集合
	 * 
	 * @param list
	 * @return
	 */
	public static List<FncPrjFstpyInfoVO> toVOList(List<FncPrjFstpyInfoDTO> list) {
		List<FncPrjFstpyInfoVO> voList = new ArrayList<FncPrjFstpyInfoVO>();
		if (CollectionUtils.isNotEmpty(list)) {
			for (FncPrjFstpyInfoDTO dto : list) {
				voList.add(toVO(dto));
			}
		}
		return voList;
	}

}
